package project.dade.cn.bst.utils;

import android.os.Environment;
import android.util.Log;

import java.text.SimpleDateFormat;
import java.util.Date;

public class ULog {
	private static final boolean mIsFileLogEnable = true;
	private static final String flag = " -------- ";

	public static void v(Object obj, String msg) {
		Log.v(obj.getClass().getName(), flag + msg);
		if (mIsFileLogEnable) {
			writeLog2File(obj.getClass().getName(), msg);
		}
	}

	public static void d(Object obj, String msg) {
		Log.d(obj.getClass().getName(), flag + msg);
		if (mIsFileLogEnable) {
			writeLog2File(obj.getClass().getName(), msg);
		}
	}

	public static void i(Object obj, String msg) {
		Log.i(obj.getClass().getName(), flag + msg);
		if (mIsFileLogEnable) {
			writeLog2File(obj.getClass().getName(), msg);
		}
	}

	public static void w(Object obj, String msg) {
		Log.w(obj.getClass().getName(), flag + msg);
		if (mIsFileLogEnable) {
			writeLog2File(obj.getClass().getName(), msg);
		}
	}

	public static void e(Object obj, String msg) {
		Log.e(obj.getClass().getName(), flag + msg);
		if (mIsFileLogEnable) {
			writeLog2File(obj.getClass().getName(), msg);
		}
	}

	public static void vF(Object obj, String msg) {
		Log.v(obj.getClass().getName(), flag + msg);
		writeLog2File(obj.getClass().getName(), msg);
	}

	public static void dF(Object obj, String msg) {
		Log.d(obj.getClass().getName(), flag + msg);
		writeLog2File(obj.getClass().getName(), msg);
	}

	public static void iF(Object obj, String msg) {
		Log.i(obj.getClass().getName(), flag + msg);
		writeLog2File(obj.getClass().getName(), msg);
	}

	public static void wF(Object obj, String msg) {
		Log.w(obj.getClass().getName(), flag + msg);
		writeLog2File(obj.getClass().getName(), msg);
	}

	public static void eF(Object obj, String msg) {
		Log.e(obj.getClass().getName(), flag + msg);
		writeLog2File(obj.getClass().getName(), msg);
	}

	public static int v(String tag, String msg, Throwable tr) {
		if (mIsFileLogEnable) {
			writeLog2File(tag, msg);
		}
		return Log.v(tag, flag + msg, tr);
	}

	public static int d(String tag, String msg, Throwable tr) {
		if (mIsFileLogEnable) {
			writeLog2File(tag, msg);
		}
		return Log.d(tag, flag + msg, tr);
	}

	public static int i(String tag, String msg, Throwable tr) {
		if (mIsFileLogEnable) {
			writeLog2File(tag, msg);
		}
		return Log.i(tag, flag + msg, tr);
	}

	public static int w(String tag, String msg, Throwable tr) {
		if (mIsFileLogEnable) {
			writeLog2File(tag, msg);
		}
		return Log.w(tag, flag + msg, tr);
	}

	public static int e(String tag, String msg, Throwable tr) {
		if (mIsFileLogEnable) {
			writeLog2File(tag, msg);
		}
		return Log.e(tag, flag + msg, tr);
	}

	public static int vF(String tag, String msg, Throwable tr) {
		writeLog2File(tag, msg);
		return Log.v(tag, flag + msg, tr);
	}

	public static int dF(String tag, String msg, Throwable tr) {
		writeLog2File(tag, msg);
		return Log.d(tag, flag + msg, tr);
	}

	public static int iF(String tag, String msg, Throwable tr) {
		writeLog2File(tag, msg);
		return Log.i(tag, flag + msg, tr);
	}

	public static int wF(String tag, String msg, Throwable tr) {
		writeLog2File(tag, msg);
		return Log.w(tag, flag + msg, tr);
	}

	public static int eF(String tag, String msg, Throwable tr) {
		writeLog2File(tag, msg);
		return Log.e(tag, flag + msg, tr);
	}

	public static void v(String tag, String msg) {
		if (mIsFileLogEnable) {
			writeLog2File(tag, msg);
		}
		Log.v(tag, flag + msg);
	}

	public static void d(String tag, String msg) {
		Log.d(tag, flag + msg);
		if (mIsFileLogEnable) {
			writeLog2File(tag, msg);
		}
	}

	public static void i(String tag, String msg) {
		Log.i(tag, flag + msg);
		if (mIsFileLogEnable) {
			writeLog2File(tag, msg);
		}
	}

	public static void w(String tag, String msg) {
		if (mIsFileLogEnable) {
			writeLog2File(tag, msg);
		}
		Log.w(tag, flag + msg);
	}

	public static void e(String tag, String msg) {
		Log.e(tag, flag + msg);
		writeLog2File(tag, msg);
	}

	public static void vF(String tag, String msg) {
		writeLog2File(tag, msg);
		Log.v(tag, flag + msg);
	}

	public static void dF(String tag, String msg) {
		Log.d(tag, flag + msg);
		writeLog2File(tag, msg);
	}

	public static void iF(String tag, String msg) {
		Log.i(tag, flag + msg);
		writeLog2File(tag, msg);
	}

	public static void wF(String tag, String msg) {
		writeLog2File(tag, msg);
		Log.w(tag, flag + msg);
	}

	public static void eF(String tag, String msg) {
		Log.e(tag, flag + msg);
		writeLog2File(tag, msg);
	}

	public static int v(Object obj, String msg, Throwable tr) {
		if (mIsFileLogEnable) {
			writeLog2File(obj.getClass().getName(), msg);
		}
		return Log.v(obj.getClass().getName(), flag + msg, tr);
	}

	public static int d(Object obj, String msg, Throwable tr) {
		if (mIsFileLogEnable) {
			writeLog2File(obj.getClass().getName(), msg);
		}
		return Log.d(obj.getClass().getName(), flag + msg, tr);
	}

	public static int i(Object obj, String msg, Throwable tr) {
		if (mIsFileLogEnable) {
			writeLog2File(obj.getClass().getName(), msg);
		}
		return Log.i(obj.getClass().getName(), flag + msg, tr);
	}

	public static int w(Object obj, String msg, Throwable tr) {
		if (mIsFileLogEnable) {
			writeLog2File(obj.getClass().getName(), msg);
		}
		return Log.w(obj.getClass().getName(), flag + msg, tr);
	}

	public static int e(Object obj, String msg, Throwable tr) {
		if (mIsFileLogEnable) {
			writeLog2File(obj.getClass().getName(), msg);
		}
		return Log.e(obj.getClass().getName(), flag + msg, tr);
	}

	public static int vF(Object obj, String msg, Throwable tr) {
		writeLog2File(obj.getClass().getName(), msg);
		return Log.v(obj.getClass().getName(), flag + msg, tr);
	}

	public static int dF(Object obj, String msg, Throwable tr) {
		writeLog2File(obj.getClass().getName(), msg);
		return Log.d(obj.getClass().getName(), flag + msg, tr);
	}

	public static int iF(Object obj, String msg, Throwable tr) {
		writeLog2File(obj.getClass().getName(), msg);
		return Log.i(obj.getClass().getName(), flag + msg, tr);
	}

	public static int wF(Object obj, String msg, Throwable tr) {
		writeLog2File(obj.getClass().getName(), msg);
		return Log.w(obj.getClass().getName(), flag + msg, tr);
	}

	public static int eF(Object obj, String msg, Throwable tr) {
		writeLog2File(obj.getClass().getName(), msg);
		return Log.e(obj.getClass().getName(), flag + msg, tr);
	}

	/**
	 * 打开日志文件并写入日志
	 * 
	 * @return
	 * **/
	private static void writeLog2File(String tag, String text) {// 新建或打开日志文件
		String LOG_PATH = Environment.getExternalStorageDirectory()
				+ "/test_log/";// 日志文件在sdcard中的路径
		final String LOG_FILE_NAME = "_log.txt";// 本类输出的日志文件名称
		final SimpleDateFormat logSdf = new SimpleDateFormat("HH:mm:ss");// 日志的输出格式
		final SimpleDateFormat logFile = new SimpleDateFormat("yyyy-MM-dd");// 日志文件格式
		Date nowtime = new Date();
		String fullPathName = LOG_PATH + logFile.format(nowtime).trim()
				+ LOG_FILE_NAME;
		String content = logSdf.format(nowtime).trim() + "   " + tag + "   "
				+ text + "\r\n";
		try {
			UFile.writeFile(fullPathName, content, true);
		} catch (Exception e) {
			// TODO: handle exception
			System.out.println("------writeLog2File出错");
		}
	}
}
